<?php

namespace App\Recharge\Bean;

use App\Basic\Bean;
use App\Models\NsSupplierGoods;
use App\Models\XnBatchOrder;
use App\Models\XnMyyGoodsInterconnection;
use Illuminate\Database\Eloquent\Collection;

class CyclePunchBean extends Bean
{
    /**
     * @var XnBatchOrder 订单
     */
    protected XnBatchOrder $order;

    /**
     * @var NsSupplierGoods 主商品
     */
    protected XnMyyGoodsInterconnection $good;



    /**
     * @var array 子商品 过滤后的
     */
    protected array $children = [];

    /**
     * @var float|string
     */
    protected float|string $price;

    /**
     * @var string
     */
    protected string $order_no;

    /**
     * @var int
     */
    protected int $rechargeNum;


    /**
     * @var int 百分比单量
     */
    protected int $percentageSingular = 10;

    /**
     * @var string
     */
    protected string $percentageUuid;

    /**
     * @var Collection 未过滤的子商品
     */
    protected Collection $relations;

    /**
     * 手机归属地
     *
     * @var string|null
     */
    protected ?string $phoneBelong = null;

    /**
     * @var bool|null
     */
    protected bool|null $phoneIsTelecom = null;

    /**
     * @return XnBatchOrder
     */
    public function getOrder(): XnBatchOrder
    {
        return $this->order;
    }

    /**
     * @param XnBatchOrder $order
     */
    public function setOrder(XnBatchOrder $order): void
    {
        $this->order = $order;
    }

    /**
     * @return XnMyyGoodsInterconnection
     */
    public function getGood(): XnMyyGoodsInterconnection
    {
        return $this->good;
    }

    /**
     * @param XnMyyGoodsInterconnection $good
     */
    public function setGood(XnMyyGoodsInterconnection $good): void
    {
        $this->good = $good;
    }

    /**
     * @return array
     */
    public function getChildren(): array
    {
        return $this->children;
    }

    /**
     * @param array $children
     */
    public function setChildren(array $children): void
    {
        $this->children = $children;
    }

    /**
     * @return float|string
     */
    public function getPrice(): float|string
    {
        return $this->price;
    }

    /**
     * @param float|string $price
     */
    public function setPrice(float|string $price): void
    {
        $this->price = $price;
    }

    /**
     * @return string
     */
    public function getOrderNo(): string
    {
        return $this->order_no;
    }

    /**
     * @param string $order_no
     */
    public function setOrderNo(string $order_no): void
    {
        $this->order_no = $order_no;
    }

    /**
     * @return int
     */
    public function getRechargeNum(): int
    {
        return $this->rechargeNum;
    }

    /**
     * @param int $rechargeNum
     */
    public function setRechargeNum(int $rechargeNum): void
    {
        $this->rechargeNum = $rechargeNum;
    }

    /**
     * @return int
     */
    public function getPercentageSingular(): int
    {
        return $this->percentageSingular;
    }

    /**
     * @param int $percentageSingular
     */
    public function setPercentageSingular(int $percentageSingular): void
    {
        $this->percentageSingular = $percentageSingular;
    }

    /**
     * @return string
     */
    public function getPercentageUuid(): string
    {
        return $this->percentageUuid;
    }

    /**
     * @param string $percentageUuid
     */
    public function setPercentageUuid(string $percentageUuid): void
    {
        $this->percentageUuid = $percentageUuid;
    }

    /**
     * @return Collection
     */
    public function getRelations(): Collection
    {
        return $this->relations;
    }

    /**
     * @param Collection $relations
     */
    public function setRelations(Collection $relations): void
    {
        $this->relations = $relations;
    }

    /**
     * @return string|null
     */
    public function getPhoneBelong(): ?string
    {
        return $this->phoneBelong;
    }

    /**
     * @param string $phoneBelong
     */
    public function setPhoneBelong(string $phoneBelong): void
    {
        $this->phoneBelong = $phoneBelong;
    }

    /**
     * @return bool|null
     */
    public function getPhoneIsTelecom(): ?bool
    {
        return $this->phoneIsTelecom;
    }

    /**
     * @param bool|null $phoneIsTelecom
     */
    public function setPhoneIsTelecom(?bool $phoneIsTelecom): void
    {
        $this->phoneIsTelecom = $phoneIsTelecom;
    }



}
